package com.zjsru.oneDay;

/**
 * @Author: likew
 * @Date: 2022/2/27
 *
 * 最优除法
 * 即从前往后进行构建出连除的答案，如果 numsnums 的长度大于 22，再追加一对大括号即可
 *
 * 输入: [1000,100,10,2]
 * 输出: "1000/(100/10/2)"
 * 解释:
 * 1000/(100/10/2) = 1000/((100/10)/2) = 200
 * 但是，以下加粗的括号 "1000/((100/10)/2)" 是冗余的，
 * 因为他们并不影响操作的优先级，所以你需要返回 "1000/(100/10/2)"。
 *
 * 其他用例:
 * 1000/(100/10)/2 = 50
 * 1000/(100/(10/2)) = 50
 * 1000/100/10/2 = 0.5
 * 1000/100/(10/2) = 2
 *
 *
 */
public class optimalDivision {
    public String optimalDivision(int[] nums) {
        int len = nums.length;
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < len; i++) {
            sb.append(nums[i]);
            if(i + 1 < len) {
                sb.append("/");
            }
        }
        if(len > 2){
            sb.insert(sb.indexOf("/")+1,"(");
            sb.append(")");
        }
        return sb.toString();
    }

    public static void main(String[] args) {
        optimalDivision optimalDivision = new optimalDivision();
        int[] nums = new int[]{1000,100,10,2};
        System.out.println(optimalDivision.optimalDivision(nums));
    }
}
